<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 核心：1.同步(promise里除了resolve的.then是异步请求。其它写的都是同步)>异
        // 步(微任务[promise的.then,async,await,axios]>宏任务[定时器,事件函数,ajax])

        // for (var i = 0; i <= 5; i++) {
        //     setTimeout(() => {
        //         console.log(i); //变成异步了，同步已经走完了，变成了6
        //     }, i*1000)
        // }
        // console.log(i); //先输出6，然后间隔1秒输出6个6

        // 以上代码如果想输出6,0,1,2,3,4,5,怎么实现?
        // 1：自执行函数 变同步
        // for (var i = 0; i <= 5; i++) {
        //     //a是形参
        //     ((a) => {
        //         setTimeout(() => {
        //             console.log(a);
        //         }, a * 1000)
        //     })(i); //i是实参,接受外部参数
        // }
        // console.log(i);

        //2：通过let,let是块级作用域
        // for (let i = 0; i <= 5; i++) {
        //     setTimeout(() => {
        //         console.log(i);
        //     }, i * 1000)
        // }


        // let aa = async () => {
        //     console.log(3); //没有await前都是同步
        //     await setTimeout(() => { //await 后面都是异步的，定时器是宏任务
        //         console.log(2);
        //     }, 0);
        //     console.log(4);   //微任务
        // }
        // aa()
        // console.log(1);  // 最后结果3,1,4,2


        // async function async1() {
        //     console.log('1') //同步2
        //     await async2()  //此处加await，会阻塞后面代码执行
        //     console.log('2') //微异步
        // }
        // async function async2() {
        //     console.log('3')//同步3
        // }

        // console.log('4') //同步1

        // setTimeout(function () {
        //     console.log('5') //宏异步
        // }, 0)

        // async1()

        // new Promise(function (resolve) {
        //     console.log('6')  //同步4
        //     resolve()  //异步
        // }).then(function () {
        //     console.log('7') //微异步
        // })
        // console.log('8')  //同步5

    //最后返回结果 4,1,3,6,8,2,7,5 

    </script>
</body>

</html>